Skip to content

SEP 4 -- Crontab监控

Head

  • Author: larry
  • Status: final
  • Type: Standards
  • Created: 2017-07-25

摘要

为Crontab做监控。

动机

Crontab如果报错或者没跑,很难立刻知道,而crontab往往用来处理数据一致性,一旦停跑或者没跑成功,影响面积很大,所以必须做到能实时感知这个状态,遇到错误能立刻报警。

问题

Crontab运行中,我们遇到的问题有两个。

  1. crontab脚本是否报错了。
  2. crontab脚本是否按照预期跑起来了。

思路

脚本心跳

每个脚本启动后,在db中记录一条记录,表示自己跑过了。

脚本报错时发送邮件报警。

脚本监控

启动一个监控工具(cron-monitor),专门监控脚本是否跑过。

扫描crontab配置,在每个固定时间点过几分钟后,去db里查询是否有对应的记录,没有就说明没有按照要求跑起来,发邮件报警。

监控脚本管理

用supervisor之类的工具管理cron-monitor进程,以及未来可能出现的其他监控进程,确保进程意外死掉后能再次被重启。

对监控工具的监控

supervisor之类的管理程序自己也是有可能会挂掉,所以也需要对这个工具本身的保活性做监控。

在supervisor管理下启动一个sv-monitor进程,这个进程的主要目的就是监控supervisor的存活性,因为单机不可靠,所以至少部署两台机器,互相监控。

  • 配置系统中总共有多个监控实例。
  • 每个实例报告自身的心跳给db。
  • 周期性的检查其他监控实例的心跳是否存在,不存在就报警。
  • 每个实例的周期不同。